package com.estagio.bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.primefaces.context.RequestContext;

import com.estagio.entity.Pais;
import com.estagio.session.PaisSession;

@ManagedBean(name="paisBean")
@SessionScoped
public class PaisBean {
	
	
	//PAIS
	private Pais pais = new Pais();
	private List<Pais> listaPais = null;
	private String mensagem;
	private Pais paisSelecionado = new Pais();
	private Pais paisPais = new Pais();
	private DataModel dataModelPais;
	private Pais paisSave;
	
	public PaisBean() {
	}
	
	//GETTERS AND SETTERS
	
	public Pais getPaisSave() {
		return paisSave;
	}

	public void setPaisSave(Pais paisSave) {
		this.paisSave = paisSave;
	}

	public DataModel getDataModelPais() {
		return dataModelPais;
	}

	public void setDataModelPais(DataModel dataModelPais) {
		this.dataModelPais = dataModelPais;
	}

	public Pais getPaisPais() {
		return paisPais;
	}

	public void setPaisPais(Pais paisPais) {
		this.paisPais = paisPais;
	}

	public Pais getPaisSelecionado() {
		return paisSelecionado;
	}

	public void setPaisSelecionado(Pais paisSelecionado) {
		this.paisSelecionado = paisSelecionado;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public List<Pais> getListaPais() {
		return listaPais;
	}

	public void setListaPais(List<Pais> listaPais) {
		this.listaPais = listaPais;
	}

	//PAIS

	public void saveEditPais() {
		PaisSession paisRN = new PaisSession();
		Pais pais = this.pais;		
		this.mensagem = paisRN.save(pais);

		FacesMessage faces = new FacesMessage(mensagem);
		System.out.println(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);		
	}	

	public void savePais() {
		RequestContext.getCurrentInstance().update(":formDialog:pgDialogManterPais");
		PaisSession paisRN = new PaisSession();
		Pais pais = this.paisSave;		
		this.mensagem = paisRN.save(pais);
		
		RequestContext.getCurrentInstance().update("dataTablePais");		
		FacesMessage faces = new FacesMessage(this.mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);		
		RequestContext.getCurrentInstance().update("formManterPais:messages");
	}

	public String deletePais() {
		PaisSession paisRN = new PaisSession();		
		Pais pais = this.paisSave;
		this.mensagem = paisRN.delete(pais);
		System.out.println(this.mensagem);
		this.paisSave = new Pais();
		this.listaPais = null;
		RequestContext.getCurrentInstance().update(":formConsultarPais:dataTablePais");
		FacesMessage faces = new FacesMessage(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		return "consultarPais";
	}
	
	public DataModel findPais() {
		RequestContext.getCurrentInstance().update("panelDialogConsultarPais");		
		
		List<Pais> listaPais = new PaisSession().find(this.pais);
		this.dataModelPais = new ListDataModel(listaPais);
		return this.dataModelPais;
	}

	//INVOCAR TELAS
	public String newPais() {
		this.paisSave = new Pais();
		return "manterPais";
	}
	
	public String consultarPais() {
		return "consultarPais";
	}


	public String editarPais() {
		this.paisSave = (Pais) this.dataModelPais.getRowData();
		return "editarPais";
	}
	
	public String excluirPais() {
		this.paisSave = (Pais) this.dataModelPais.getRowData();
		return "excluirPais";
	}
	
	
	public void clean() {
		this.listaPais = null;
		this.pais = new Pais();
	}


	//DIALOGS
	public void openDialogConsultarPais() {
		RequestContext.getCurrentInstance().update("idDialogConsultarPais");
		RequestContext.getCurrentInstance().execute("dialogConsultarPais.show()");
	}
	
	public void openDialogManterPais() {
		this.paisSave = new Pais();
		RequestContext.getCurrentInstance().update("idDialogManterPais");
		RequestContext.getCurrentInstance().execute("dialogManterPais.show()");
	}
}
